home *** CD-ROM | disk | FTP | other *** search
/ PC/CD Gamer UK 129 / CD Gamer Issue 129 (December 2003) (Disc 1).ISO / Addons / Vietcong Map editor / max plugins / scripts / pteroTools / _smoothRollOut.msp < prev    next >
Encoding:
Text File  |  2003-09-12  |  10.2 KB  |  184 lines

  1. rollout SmoothRollOut "Smooth" rolledUp:true (
  2.     local _name
  3.     local _RollOut
  4.  
  5.     ---------------------------------------------------------------
  6.     -- init GUI
  7.     ---------------------------------------------------------------
  8.     include "$scripts\\pteroTools\\_propGroupUI.ms"
  9.     spinner        spnAngle    "Angle:"        FieldWidth:40    type:#float        range:[0, 180, 0]    align:#left        offset:[20,0]    across:2
  10.     angle        angAngle    ""                diameter:17        dir:#ccw        range:[0,180,0]        align:#right    offset:[-15,0]    degrees:0        StartDegrees:0    color:(color 255 255 0)
  11.     group "Groups" (
  12.         checkbutton    btnGrp01    "1"            width:16    height:16    offset:[-5,0]    align:#left        across:8    
  13.         checkbutton    btnGrp02    "2"            width:16    height:16    offset:[-1,0]                                
  14.         checkbutton    btnGrp03    "3"            width:16    height:16    offset:[1,0]                                
  15.         checkbutton    btnGrp04    "4"            width:16    height:16    offset:[3,0]                                
  16.         checkbutton    btnGrp05    "5"            width:16    height:16    offset:[5,0]                                
  17.         checkbutton    btnGrp06    "6"            width:16    height:16    offset:[7,0]                                
  18.         checkbutton    btnGrp07    "7"            width:16    height:16    offset:[9,0]                                
  19.         checkbutton    btnGrp08    "8"            width:16    height:16    offset:[11,0]                            
  20.         checkbutton    btnGrp09    "9"            width:16    height:16    offset:[-5,-2]    align:#left        across:8    
  21.         checkbutton    btnGrp10    "10"        width:16    height:16    offset:[2,-2]                            
  22.         checkbutton    btnGrp11    "11"        width:16    height:16    offset:[4,-2]                
  23.         checkbutton    btnGrp12    "12"        width:16    height:16    offset:[6,-2]
  24.         checkbutton    btnGrp13    "13"        width:16    height:16    offset:[8,-2]
  25.         checkbutton    btnGrp14    "14"        width:16    height:16    offset:[10,-2]
  26.         checkbutton    btnGrp15    "15"        width:16    height:16    offset:[12,-2]
  27.         checkbutton    btnGrp16    "16"        width:16    height:16    offset:[14,-2]
  28.         checkbutton    btnGrp17    "17"        width:16    height:16    offset:[-5,-2]    align:#left        across:8
  29.         checkbutton    btnGrp18    "18"        width:16    height:16    offset:[2,-2]
  30.         checkbutton    btnGrp19    "19"        width:16    height:16    offset:[4,-2]
  31.         checkbutton    btnGrp20    "20"        width:16    height:16    offset:[6,-2]
  32.         checkbutton    btnGrp21    "21"        width:16    height:16    offset:[8,-2]
  33.         checkbutton    btnGrp22    "22"        width:16    height:16    offset:[10,-2]
  34.         checkbutton    btnGrp23    "23"        width:16    height:16    offset:[12,-2]
  35.         checkbutton    btnGrp24    "24"        width:16    height:16    offset:[14,-2]
  36.         checkbutton    btnGrp25    "25"        width:16    height:16    offset:[-5,-2]    align:#left        across:8
  37.         checkbutton    btnGrp26    "26"        width:16    height:16    offset:[2,-2]
  38.         checkbutton    btnGrp27    "27"        width:16    height:16    offset:[4,-2]
  39.         checkbutton    btnGrp28    "28"        width:16    height:16    offset:[6,-2]
  40.         checkbutton    btnGrp29    "29"        width:16    height:16    offset:[8,-2]
  41.         checkbutton    btnGrp30    "30"        width:16    height:16    offset:[10,-2]
  42.         checkbutton    btnGrp31    "31"        width:16    height:16    offset:[12,-2]
  43.         checkbutton    btnGrp32    "32"        width:16    height:16    offset:[14,-2]
  44.         button        btnClrAll    "Clear All"    width:100    height:18                    align:#center
  45.     )
  46.  
  47.      ---------------------------------------------------------------
  48.     -- Init RollOut
  49.     ---------------------------------------------------------------
  50.      fn fnKeyNames    = #( _name )
  51.      fn fnKeyUI        = #( #(
  52.                                 spnAngle, btnGrp01, btnGrp02, btnGrp03, btnGrp04, btnGrp05, btnGrp06, btnGrp07, btnGrp08,
  53.                                 btnGrp09, btnGrp10, btnGrp11, btnGrp12, btnGrp13, btnGrp14, btnGrp15, btnGrp16, btnGrp17,
  54.                                 btnGrp18, btnGrp19, btnGrp20, btnGrp21, btnGrp22, btnGrp23, btnGrp24, btnGrp25, btnGrp26,
  55.                                 btnGrp27, btnGrp28, btnGrp29, btnGrp30, btnGrp31, btnGrp32
  56.                         ) )
  57.      fn fnKeyDef        = #( #( 0 ) )
  58.     fn fnName        = "Smooth"
  59.     fn fnRollOut    = SmoothRollOut
  60.     fn fnInitRollOut = (
  61.         local _name        = fnName()
  62.         local _RollOut    = fnRollOut()
  63.         fnAppendRollOut _RollOut _name
  64.     )
  65.      
  66.      
  67.      ---------------------------------------------------------------
  68.     -- fnApply()
  69.     ---------------------------------------------------------------
  70.     fn fnApply obj keyIDX read write del acq acqObj def sav clr = (
  71.         local keyNames    = fnKeyNames()
  72.         local keyUI        = fnKeyUI()
  73.         local keyDef    = if def then #( ( fnGetDefs keyNames[keyIDX] ) ) else fnKeyDef()
  74.         local keyArray    = #()
  75.         
  76.         if del do fnDeleteProp obj keyNames[keyIDX]                                                                ---- DELETE
  77.         
  78.         if sav do                                                                                                 ---- SAVE DEFAULT
  79.             try (
  80.                 for n = 1 to 33 do (
  81.                     if n == 1 do keyDef[keyIDX][n] = keyUI[keyIDX][n].value
  82.                     if n >= 2 and keyUI[keyIDX][n].checked then append keyDef[keyIDX] ( n - 1 )
  83.                 )
  84.                 fnSetDefs ( keyNames[keyIDX] as string ) ( keyDef[keyIDX] as string )
  85.                 return true
  86.             ) catch ( print ( "Error: " + _name + ".fnApply() - save" ); return false )
  87.         
  88.         if clr do for n = 2 to 33 do keyUI[keyIDX][n].checked = false                                            ---- CLEAR ALL
  89.     
  90.         keyArray = if acq then fnReadProp acqObj keyNames[keyIDX] else fnReadProp obj keyNames[keyIDX]            ---- ACQUIRE
  91.             
  92.         if read or acq or del or def do (                                                                         ---- READ
  93.             for n = 2 to 33 do keyUI[keyIDX][n].checked = false
  94.             for n = 0 to 32 do 
  95.                 if    ( keyArray[(_firstValue + n)] == "" ) or ( keyArray[(_firstValue + n)] as string == "undefined" ) or def then try (
  96.                         if n == 0 do keyUI[keyIDX][(n+1)].value = keyDef[keyIDX][(n+1)]
  97.                         if ( n >= 1 ) and ( not keyDef[keyIDX][(n+1)] == undefined ) do    keyUI[keyIDX][( keyDef[keyIDX][(n+1)] + 1 )].checked = true
  98.                     ) catch ( print ( "Error: " + _name + ".fnApply() - read - default" ); return false )
  99.                 else try (
  100.                         if n == 0 do keyUI[keyIDX][(n+1)].value = keyArray[_firstValue] as float
  101.                         if n >= 1 do keyUI[keyIDX][( ( keyArray[(_firstValue + n)] as integer ) + 1 )].checked = true
  102.                 ) catch ( print ( "Error: " + _name + ".fnApply() - read - properties" ); return false )
  103.             angAngle.degrees = spnAngle.value
  104.             if read or del do return true
  105.         )
  106.  
  107.         if write do                                                                                             ---- WRITE
  108.             try (
  109.                 keyArray[_keyName] = keyNames[keyIDX]
  110.                 del = true
  111.                 if keyUI[keyIDX][1].value > 0 do (
  112.                     try ( for n = (_firstValue + 1) to keyArray.count do deleteItem keyArray (_firstValue + 1) ) catch ()
  113.                     for n = 0 to 32 do (
  114.                         if n == 0 do keyArray[_firstValue] = keyUI[keyIDX][n+1].value as string
  115.                         if n >= 1 do if keyUI[keyIDX][n+1].checked do ( append keyArray ( n as string ); del = false )
  116.                     )
  117.                 )
  118.                 
  119.                 if del then fnDeleteProp obj keyNames[keyIDX]
  120.                 else fnWriteProp obj keyArray
  121.             return true
  122.  
  123.             ) catch ( print ( "Error: " + _name + ".fnApply() - write" ); return false )
  124.     )
  125.  
  126.      ---------------------------------------------------------------
  127.     -- fnUpdate()
  128.     ---------------------------------------------------------------
  129.     fn fnUpdate keyIDX:1 read:false write:false del:false acq:false acqObj:undefined def:false sav:false clr:false = (
  130.         if not write do write = btnAuto.checked
  131.         for obj in selection do fnApply obj keyIDX read write del acq acqObj def sav clr
  132.     )
  133.  
  134.     ---------------------------------------------------------------
  135.     -- Event Handler
  136.     ---------------------------------------------------------------
  137.     on btnGrp01            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  138.     on btnGrp02            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  139.     on btnGrp03            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  140.     on btnGrp04            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  141.     on btnGrp05            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  142.     on btnGrp06            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  143.     on btnGrp07            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  144.     on btnGrp08            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  145.     on btnGrp09            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  146.     on btnGrp10            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  147.     on btnGrp11            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  148.     on btnGrp12            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  149.     on btnGrp13            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  150.     on btnGrp14            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  151.     on btnGrp15            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  152.     on btnGrp16            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  153.     on btnGrp17            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  154.     on btnGrp18            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  155.     on btnGrp19            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  156.     on btnGrp20            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  157.     on btnGrp21            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  158.     on btnGrp22            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  159.     on btnGrp23            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  160.     on btnGrp24            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  161.     on btnGrp25            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  162.     on btnGrp26            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  163.     on btnGrp27            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  164.     on btnGrp28            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  165.     on btnGrp29            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  166.     on btnGrp30            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  167.     on btnGrp31            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  168.     on btnGrp32            changed state    do ( fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  169.     on angAngle            changed value    do ( spnAngle.value = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  170.     on spnAngle            changed value    do ( angAngle.degrees = value; fnUpdate(); fnGetPropsToShow(); fnPrintLabel() )
  171.     on btnClrAll        pressed            do ( fnUpdate clr:true; fnGetPropsToShow(); fnPrintLabel() )
  172.     on btnSet            pressed            do ( fnUpdate write:true; fnGetPropsToShow(); fnPrintLabel() )
  173.     on btnDef            pressed            do ( fnUpdate def:true; fnGetPropsToShow(); fnPrintLabel() )
  174.     on btnSav            pressed            do ( fnUpdate sav:true; fnGetPropsToShow(); fnPrintLabel() )
  175.     on btnDel            pressed            do ( fnUpdate del:true; fnGetPropsToShow(); fnPrintLabel() )
  176.     on btnAcq            changed state    do ( fnAcquire _RollOut; fnGetPropsToShow(); fnPrintLabel() )
  177.     on SmoothRollOut    open            do (
  178.         _name        = fnName()
  179.         _RollOut    = fnRollOut()
  180.         fnOpenRollOut _RollOut
  181.     )
  182.     on SmoothRollOut    close            do fnCloseRollOut _RollOut
  183. )
  184.